<?php
namespace kdnlogistics;

class Logistics
{
	private $EBusinessID = '1280105';//电商ID
	private $AppKey = 'da3f362a-8d86-435d-8e93-8fae1dbe8a0a';//电商加密私钥，快递鸟提供，注意保管，不要泄漏
	private $ReqURL = 'http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx';//请求url
	
	/**
	* Json方式  物流信息订阅	2017-10-15
	* @param $ordercode 订单编号  $shippercode  快递公司编码	$logisticcode  物流单号
	*/
	function logistics($ordercode,$shippercode,$logisticcode){
		//测试接口：http://testapi.kdniao.cc:8081/Ebusiness/EbusinessOrderHandle.aspx
		//测试电商ID==1237100，AppKey==518a73d8-1f7f-441a-b644-33e77b49d846
		
		$data = array(
				'OrderCode'		=> $ordercode,
				'ShipperCode'	=> $shippercode,
				'LogisticCode'	=> $logisticcode
		);
		$data = json_encode($data);
		
		$parameter = array(
				'EBusinessID' => $this -> EBusinessID,
				'RequestType' => '1002',
				'RequestData' => urlencode($data),
				'DataType'    => '2',
		);
	
		$parameter['DataSign'] = $this -> encrypt($data,$this -> AppKey);
	
		$result = $this -> sendPost($this -> ReqURL, $parameter);
		
		//根据公司业务处理返回的信息......
		$result = json_decode($result,true);
		return $result;
		
	
	}
	
	/**
	* post提交数据
	* @param  string $url 请求Url	 array $datas 提交的数据
	* @return url响应返回的html
	*/
	function sendPost($url, $datas) {
		$temps = array();
		foreach ($datas as $key => $value) {
			$temps[] = sprintf('%s=%s', $key, $value);
		}
		$post_data = implode('&', $temps);
		$url_info = parse_url($url);
		if(empty($url_info['port'])){
			$url_info['port']=80;
		}
		$httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";
		$httpheader.= "Host:" . $url_info['host'] . "\r\n";
		$httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n";
		$httpheader.= "Content-Length:" . strlen($post_data) . "\r\n";
		$httpheader.= "Connection:close\r\n\r\n";
		$httpheader.= $post_data;
		$fd = fsockopen($url_info['host'], $url_info['port']);
		fwrite($fd, $httpheader);
		$gets = "";
		$headerFlag = true;
		while (!feof($fd)) {
			if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {
				break;
			}
		}
		while (!feof($fd)) {
			$gets.= fread($fd, 128);
		}
		fclose($fd);
	
		return $gets;
	}
	
	/**
	* 电商Sign签名生成
	* @param data 内容	appkey Appkey
	* @return DataSign签名
	*/
	function encrypt($data, $appkey) {
		return urlencode(base64_encode(md5($data.$appkey)));
	}
}